REM------------COMPILER.1 VERSION 1.51  (C) NASPITE LABS 6.10.18
REM ---------- CHECK VARIABLE TABLE FOR OBVIOUS PROBLEMS
0  PRINT CHR$(4);"PR#3":HOME:HIMEM: 20000:DIM Q$(105)
1  ONERR  GOTO 5
2  PRINT  CHR$ (4);"OPEN VARIABLES": PRINT  CHR$ (4);"READ VARIABLES": INPUT A$: INPUT A$:
3  INPUT CC$:GOTO 3
5  PRINT  CHR$ (4);"CLOSE VARIABLES":CALL -3288
6  PRINT "ERROR CHECKING...":A =  VAL (A$):C =  VAL (CC$)
7  D = C - A: IF A = C THEN GOTO 15
8  IF D > 0 THEN X = X: IF D < 1000 THEN GOTO 15
9  IF C=0 AND (A+D)=0 THEN GOTO 15
10  PRINT "IDIOT COMPILER DETECTS ERROR IN:"
11  PRINT "      [ THE VARIABLE TABLE ]": PRINT 
12  PRINT "FIRST VARIABLE: ";A;"  LAST VARIABLE LOCATION: ";C:STOP
999 STOP


15 PRINT CHR$(4);"BRUN RAMDRIVE.INF"
16 KJ=PEEK(43626):POKE 500,KJ:KJ$=STR$(KJ)



REM ---------- LOAD FILE NAMES FOR SORTING

20 K=1:ON ERR GOTO 29
21 PRINT  CHR$ (4);"OPEN COMPILED.LINES,S";KJ
22 PRINT  CHR$ (4);"READ COMPILED.LINES"
23 INPUT Q$(K): PRINT  CHR$ (4)
24 IF Q$(K) = "END" GOTO 22
25 IF LEN(Q$(K))=0  THEN GOTO 22
26 K=K+1:GOTO 22
29 K=K-1:PRINT CHR$(4);"CLOSE"


REM ---------- SORT LINE NUMBERS AND LABELS
30 ON ERR GOTO 999
31 HOME:FOR A = 1 TO 79: VTAB 2: PRINT "=";: NEXT A
32 VTAB 1: HTAB 38: PRINT "Loading...      ": IF K < 1 THEN K = 1
33  FOR B = 1 TO K:KK =  INT (((100 / K) * B) * .79): FOR JR = 1 TO KK: VTAB 1: PRINT "";: NEXT JR: PRINT 
34  VTAB 1:KY =  INT (KK / .79): HTAB 49: PRINT KY;"%"
35  FOR C = 1 TO K - 1:Q$(0) = Q$(C):Q$(C) = Q$(C + (Q$(C) > Q$(C + 1)))
36  Q$(C + 1) = Q$((Q$(0) < Q$(C + 1)) * (C + 1)): NEXT C,B


REM----------- PRINT LINE #'S
40 PRINT "  ": FOR A = 1 TO 79: VTAB 2: PRINT "=";: NEXT A
41 FOR Z = 1 TO 80: VTAB 1: PRINT " ";: NEXT Z: PRINT
42 VTAB 1: PRINT "TABLE OF CONTENTS             ( # of Files: ";K;" )"


REM------------CATAGORIZE SORT BY NUMBER/NAME/LENGTH 
50 J = 0: DIM J$(100)
51 FOR A = 1 TO K
52 IF  LEN (Q$(A)) = 6 THEN J = J + 1:J$(J) = Q$(A)
53 NEXT A
55 FOR A = 1 TO K
56 IF  LEN (Q$(A)) = 7 THEN J = J + 1:J$(J) = Q$(A)
57  NEXT A
60 FOR A = 1 TO K
61 IF  LEN (Q$(A)) = 8 THEN J = J + 1:J$(J) = Q$(A)
62 NEXT A
63 FOR A = 1 TO K
64  IF  LEN (Q$(A)) > 8 THEN J = J + 1:J$(J) = Q$(A)
65  NEXT A
69 VTAB 3:FOR A = 1 TO J:PRINT "     ";A;": ";J$(A): NEXT


REM------------CREATE/UPDATE SORTED LIST ON DISK
70 PRINT CHR$(4);"DELETE COMPILED.LINES,S";KJ
71 PRINT CHR$(4);"OPEN COMPILED.LINES,S";KJ:PRINT CHR$(4);"WRITE COMPILED.LINES"
72 FOR A=1 TO J:PRINT J$(A):NEXT:PRINT "END"


REM (73-86 V 1.49 PATCH TO PREVENT RECOMPILE ERRORS!)
73 PRINT CHR$(4);"CLOSE"
74 POKE 43626,3

REM------------MAKE SURE COMPILE FILES EMPTY
80 ON ERR GOTO 82
81 PRINT CHR$(4);"DELETE COMPILE.A"
82 ON ERR GOTO 84
83 PRINT CHR$(4);"DELETE COMPILE.B"
84 ON ERR GOTO 86
85 PRINT CHR$(4);"DELETE COMPILE.C"
86 POKE 43636,KJ:ZZ=0:DIM L$(100)


REM------------CREATE COMPILE.A MASTER LIST
100 PRINT CHR$(4);"OPEN COMPILE.A,S3"
101 PRINT CHR$(4);"WRITE COMPILE.A"
102 PRINT "START":PRINT CHR$(4);"CLOSE"

110 ZZ=0:PRINT:FOR XX=1 TO J
111 ON ERR GOTO 119
112 ZZ=ZZ+1:Z=0:L=1
113 PRINT " ** PROCESSING ";J$(XX):L$(L)=""
114 PRINT CHR$(4);"OPEN";J$(XX);",S";KJ
115 PRINT CHR$(4);"READ";J$(XX)
116 GET LP$: IF  ASC (LP$) = 13 OR  ASC (LP$) = 141 GOTO 118
117 L$(L) = L$(L) + LP$: GOTO 116
118 L = L + 1:L$(L) = "": GOTO 116
119 PRINT CHR$(4);"CLOSE":IF L<2 THEN GOTO 500

500 PRINT "    ERR: THIS LINE DOES NOT EXIST OR IS EMPTY.":END

120  CALL -3288:PRINT  CHR$ (4);"APPEND COMPILE.A,S3"
121  PRINT  CHR$ (4);"WRITE COMPILE.A"
122  PRINT "NEW.LINE":PRINT J$(XX)
123  FOR A = 1 TO L - 1:PRINT L$(A):NEXT
124  PRINT  CHR$ (4);"CLOSE"
125  FOR A=1 TO L-1:HTAB 10:PRINT L$(A):NEXT:NEXT
126  PRINT "** NO MORE LINES..."

130 PRINT CHR$(4);"APPEND COMPILE.A,S3"
131 PRINT CHR$(4);"WRITE COMPILE.A"
132 PRINT "END":PRINT CHR$(4);"CLOSE"
135 PRINT  CHR$ (4);"RUN COMPILER.2,S";KJ$








